//package com.horoscope.astrology.zodiac.signs.free.utils.ad.ad_implement
//
//import android.app.Activity
//import android.util.Log
//import com.horoscope.astrology.zodiac.signs.free.AppSettingManager
//import com.horoscope.astrology.zodiac.signs.free.BuildConfig
//import com.horoscope.astrology.zodiac.signs.free.MmoApplication
//import com.horoscope.astrology.zodiac.signs.free.R
//import com.horoscope.astrology.zodiac.signs.free.bean.ConfigResultBean
//import com.horoscope.astrology.zodiac.signs.free.utils.EventType
//import com.horoscope.astrology.zodiac.signs.free.utils.FlurryEventUtil
//import com.horoscope.astrology.zodiac.signs.free.utils.interfaceUtils.UnityInterstitialListener
//import com.horoscope.astrology.zodiac.signs.free.utils.interfaceUtils.UnityRewardListener
//import com.jeremyliao.liveeventbus.LiveEventBus
//import com.unity3d.ads.IUnityAdsListener
//import com.unity3d.ads.UnityAds
//import java.util.*
//import kotlin.collections.ArrayList
//
//
///**
// * 务必在展示插页式广告时暂停操作。
// * 插页式广告类型多样，包括文字广告、图片广告和视频广告等。确保应用在展示插页式广告时，也会暂停使用某些资源，
// * 以便供广告使用，这一点十分重要。例如，当您发出展示插页式广告的调用后，请务必暂停应用产生的所有音频输出。
// * 您可以在 onAdClosed() 事件处理脚本中恢复声音播放，该处理脚本会在用户结束与广告的互动之后被调用。此外，
// * 请考虑在广告展示时暂停所有密集计算任务（例如游戏循环）。这将确保用户不会遇到图像无响应/响应慢或者视频卡顿的现象。
// *
// * 留出充足的加载时间。
// * 确保在恰当的时间展示插页式广告十分重要，同样，确保用户无需等待广告加载也十分重要。在您打算调用 show() 前，
// * 请事先通过调用 loadAd() 加载广告，这可确保应用在广告展示时间来临前，准备好已完全加载的插页式广告。
// * */
//class LoadUnityAd private constructor() {
//
//    private val mContext = MmoApplication.getInstance()
//
//    private var iList = Collections.synchronizedList(ArrayList<ConfigResultBean.AdInfo>())
//    private var rList = Collections.synchronizedList(ArrayList<ConfigResultBean.AdInfo>())
//
//    // 用于打点
//    private var iPlacement = ""
//    private var rPlacement = ""
//
//    private var mPosition = 0
//
//    private var mUnityInterstitialListener: UnityInterstitialListener? = null
//    private var mUnityRewardListener: UnityRewardListener? = null
//
//    fun setUnityInterstitialListener(listener: UnityInterstitialListener) {
//        mUnityInterstitialListener = listener
//    }
//
//    fun setUnityRewardListener(listener: UnityRewardListener) {
//        mUnityRewardListener = listener
//    }
//
//    companion object {
//        val mInstance by lazy(LazyThreadSafetyMode.SYNCHRONIZED) {
//            LoadUnityAd()
//        }
//    }
//
//    @Synchronized
//    fun initInsertAD(bean: ConfigResultBean.AdInfo) {
//        UnityAds.addListener(object : IUnityAdsListener {
//            override fun onUnityAdsStart(placementId: String?) {
//                if (iPlacement != "Supplement") {
//                    FlurryEventUtil.putDataToEvent(
//                        EventType.TYPE_AD_DISPLAY, "type", iPlacement
//                    )
//                }
//                mListener?.onOpen()
//                FlurryEventUtil.putDataToEvent(EventType.TYPE_AD_CLICK, "type", iPlacement)
//            }
//
//            override fun onUnityAdsFinish(placementId: String?, result: UnityAds.FinishState?) {
//                mListener?.onClose()
//            }
//
//            override fun onUnityAdsError(error: UnityAds.UnityAdsError?, message: String?) {
//                mUnityInterstitialListener!!.onUnityFailed(message ?: "")
//                Log.e("wsTest", "UnityInterstitial失败：$message")
//            }
//
//            override fun onUnityAdsReady(placementId: String?) {
//                iList.add(bean)
//                mUnityInterstitialListener!!.onUnityADLoad(bean)
//                Log.e("wsTest", "UnityInterstitial成功")
//            }
//        })
//        UnityAds.load(getAdId(1, bean.id))
//    }
//
//    fun showInterstitialAd(activity: Activity, placement: String): Boolean {
//        iPlacement = placement
//        var isShow = false
//        if (iList.isNotEmpty()) {
//            iList.firstOrNull()?.let {
//                if (UnityAds.isInitialized() && UnityAds.isReady(it.id)) {
//                    UnityAds.show(activity, it.id)
//                    iList.remove(it)
////                    GlobalScope.launch(Dispatchers.Main) {
////                        delay(2500L)
////                        ADInterstitialManager.mInstance.getInterstitialFirst()
////                    }
//                    supplement()
//                    isShow = true
//                }
//            }
//        } else {
//            AppSettingManager.saveInt(1, "supplement")//没有加载，需要补充一次 num = 1
//        }
//        return isShow
//    }
//
//    /**rewardl广告数据准备，初始化对象，加载对象，显示广告**/
//    @Synchronized
//    fun initRewardAD(bean: ConfigResultBean.AdInfo) {
//        UnityAds.addListener(object : IUnityAdsListener {
//            override fun onUnityAdsStart(placementId: String?) {
//                if (iPlacement != "Supplement") {
//                    FlurryEventUtil.putDataToEvent(
//                        EventType.TYPE_AD_DISPLAY, "type", iPlacement
//                    )
//                }
//                mListener?.onOpen()
//                FlurryEventUtil.putDataToEvent(EventType.TYPE_AD_CLICK, "type", iPlacement)
//            }
//
//            override fun onUnityAdsFinish(placementId: String?, result: UnityAds.FinishState?) {
//                if (result == UnityAds.FinishState.COMPLETED) { // 获得了奖励
//                    LiveEventBus.get(rPlacement).post(mPosition)
//                }
//            }
//
//            override fun onUnityAdsError(error: UnityAds.UnityAdsError?, message: String?) {
//                mUnityRewardListener!!.onUnityRewardFailed(message ?: "")
//                Log.e("wsTest", "Unity视频失败：$message")
//            }
//
//            override fun onUnityAdsReady(placementId: String?) {
//                rList.add(bean)
//                mUnityRewardListener!!.onUnityRewardLoad(bean)
//                Log.e("wsTest", "Unity视频成功")
//            }
//        })
//        UnityAds.load(getAdId(2, bean.id))
//    }
//
//    fun showRewardedVideoAd(placement: String, activity: Activity, position: Int): Boolean {
//        rPlacement = placement
//        mPosition = position
//        var isShow = false
//        if (rList.isNotEmpty()) {
//            rList.firstOrNull()?.let {
//                if (UnityAds.isInitialized() && UnityAds.isReady(it.id)) {
//                    UnityAds.show(activity, it.id)
//                    rList.remove(it)
////                    GlobalScope.launch(Dispatchers.Main) {
////                        delay(2500L)
////                        ADRewardManager.mInstance.getRewardFirst()
////                    }
//                    isShow = true
//                }
//            }
//        }
//        return isShow
//    }
//
//    /**rewardl广告数据准备，初始化对象，加载对象，显示广告**/
//
//    // type : 1插页 2激励
//    private fun getAdId(type: Int, id: String): String {
//        return if (BuildConfig.DEBUG) {
//            when (type) {
//                1 -> mContext.getString(R.string.interstitial_test_id)
//                2 -> mContext.resources.getString(R.string.native_ad_id_text)
//                else -> id
//            }
//        } else {
//            id
//        }
//    }
//
//    // 是否正常显示了广告，在本地sp做记录
//    private fun supplement() {
//        if (AppSettingManager.readInt("supplement", 0) == 1) {//补充展示AD，标志位置0
//            AppSettingManager.saveInt(0, "supplement")
//            FlurryEventUtil.putDataToEvent(
//                EventType.TYPE_AD_INTERSTITIAL_DISPLAY, "type", "Supplement"
//            )
//        } else {//正常展示广告
//            FlurryEventUtil.putDataToEvent(
//                EventType.TYPE_AD_INTERSTITIAL_DISPLAY, "type", "Correct"
//            )
//        }
//    }
//
//    private var mListener: AdClose? = null
//
//    fun setOnAdCloseListener(listener: AdClose) {
//        mListener = listener
//    }
//
//    // 用户对广告打开 or 关闭的回调
//    interface AdClose {
//        fun onClose()
//        fun onOpen()
//    }
//
//}